package com.travelsmart.client.apresentacao.controller;

/**
 * Usado pelas views para notificar o a ocorrência de um evento importante para os 
 * models, ou seja, o CommandController traduz as interações do usuário com a visão, 
 * mapeando-as para tarefas que o modelo irá realizar. Em nossa aplicação, por exemplo,
 * a interação do usuário pode ser um clique de botão.
 * @author arthur
 *
 * @param <RETURN_VIEW>
 */
public interface CommandController<RETURN_VIEW> {
	/**
	 * Chamado quando a interação do usuário resulta 
	 * em um evento consistente, sem erro.
	 * @param e
	 */
	public void handleSuccess(RETURN_VIEW e);
	/**
	 * Chamado quando a interação do usuário resulta 
	 * em um evento inconsistente (erro) e este deve
	 * ser notificado p/ o model.
	 * @param msg
	 */
	public void handleError(String msg);
}
